package cn.tedu.charging.device.dao.repository;

import cn.tedu.charging.device.pojo.po.StationCanalPO;
import cn.tedu.charging.device.pojo.po.StationPO;

import java.util.List;

public interface StationCacheRepository {

    void saveAllStations(List<StationPO> stations);

    List<StationPO> search(Double lng, Double lat, Integer distance);

    /**
     * String set
     * Hash put
     * add put set
     * @param stationCanalPO
     */
    void insert(StationCanalPO stationCanalPO);

    /**
     * String set key相同就更新覆盖 不同新增
     * Hash put key相同就更新覆盖 不同新增
     *
     * 通过BigKey和hashKey 更新 局部更新
     * hashOperations.put(bigKey, hashKey, value);
     * hashOperations.get(bigKey, hashKey);
     * hashOperations.increment(bigKey,nameHashKey,1) 加
     * hashOperations.increment(bigKey,nameHashKey,-1) 减
     * hashOperations.delete(bigKey,lngHashKey) 删
     * @param before
     * @param after
     */
    void update(StationCanalPO before, StationCanalPO after);

    /**
     * redisTemplate.delete(bigKey) 删除
     * GEO的删除
     * 5.0之前 没有GEODEL 这个命令 可以 GEOADD 更新 把想删除的member 的 lat lng 设置为无效的
     * 5.0之后 有GEODEL 这个命令
     * @param stationCanalPO
     */
    void delete(StationCanalPO stationCanalPO);
}
